#ifndef _FS_H
#define _FS_H

void buffer_init(long buffer_end);

#define NR_OPEN 20

#define NR_HASH 307
#define NR_BUFFERS nr_buffers
#define BLOCK_SIZE 1024

extern int nr_buffers;

struct buffer_head {
	/* 指向块数据，大小是1K */
	char * b_data;			/* pointer to data block (1024 bytes) */
	/* 块号 */
	unsigned long b_blocknr;	/* block number */
	/* 数据对应的设备号，0 = free，表示未使用 */
	unsigned short b_dev;		/* device (0 = free) */
	/* 表示数据是否是最新的 */
	unsigned char b_uptodate;
	/* 数据是否是脏数据 */
	unsigned char b_dirt;		/* 0-clean,1-dirty */
	/* 使用该缓冲区块的用户计数（就是引用计数） */
	unsigned char b_count;		/* users using this block */
	/* 是否被锁 */
	unsigned char b_lock;		/* 0 - ok, 1 -locked */
	struct task_struct * b_wait; /* 在这个块缓冲上等待的任务 */
	struct buffer_head * b_prev; /* 前一个缓冲块 */
	struct buffer_head * b_next; /* 下一个缓冲块 */
	struct buffer_head * b_prev_free; /* 前一个空闲缓冲块 */
	struct buffer_head * b_next_free; /* 下一个空闲缓冲块 */
};


#endif /* _FS_H */